package org.lemon.transport.context.service.queue;

import com.google.common.util.concurrent.ListenableFuture;
import org.lemon.transport.context.service.queue.stats.MessagesStats;

public interface QueueRequestTemplate<Request, Response> {

    void init();

    ListenableFuture<Response> send(Request request);

    ListenableFuture<Response> send(Request request, long timeoutNs);

    void stop();

    void setMessagesStats(MessagesStats messagesStats);
}
